/**
 * 支持的语言列表
 */
const LANGUAGES = {
    en: "English",
    "zh-CN": "ChineseSimplified",
    "zh-TW": "ChineseTraditional",
    fr: "French",
    es: "Spanish",
    ru: "Russian",
    ar: "Arabic",
    de: "German",
    ja: "Japanese",
    pt: "Portuguese",
    hi: "Hindi",
    ur: "Urdu",
    ko: "Korean",
    ach: "Achinese",
    af: "Afrikaans",
    aka: "Akan",
    sq: "Albanian",
    am: "Amharic",
    arg: "Aragonese",
    hy: "Armenian",
    asm: "Assamese",
    ast: "Asturian",
    aym: "Aymara",
    az: "Azerbaijani",
    bal: "Baluchi",
    sun: "BasaSunda",
    bak: "Bashkir",
    eu: "Basque",
    be: "Belarusian",
    bem: "Bemba",
    bn: "Bengali",
    ber: "Berberlanguages",
    bho: "Bhojpuri",
    bis: "Bislama",
    bli: "Blin",
    nob: "Bokmal",
    bs: "Bosnian",
    bre: "Breton",
    bg: "Bulgarian",
    bur: "Burmese",
    yue: "Cantonese",
    ca: "Catalan",
    ceb: "Cebuano",
    chr: "Cherokee",
    ny: "Chichewa",
    chv: "Chuvash",
    wyw: "ClassicalChinese",
    cor: "Cornish",
    co: "Corsican",
    cre: "Creek",
    cri: "CrimeanTatar",
    hr: "Croatian",
    cs: "Czech",
    da: "Danish",
    prs: "Dari",
    div: "Divehi",
    nl: "Dutch",
    eo: "Esperanto",
    et: "Estonian",
    fao: "Faroese",
    fj: "Fiji",
    fil: "Filipino",
    fi: "Finnish",
    fy: "Frisian",
    fri: "Friulian",
    ful: "Fulani",
    gla: "Gaelic",
    gl: "Galician",
    ka: "Georgian",
    el: "Greek",
    grn: "Guarani",
    gu: "Gujarati",
    ht: "HaitianCreole",
    hak: "HakhaChin",
    ha: "Hausa",
    haw: "Hawaiian",
    he: "Hebrew",
    hil: "Hiligaynon",
    hmn: "Hmong",
    hu: "Hungarian",
    hup: "Hupa",
    is: "Icelandic",
    ido: "Ido",
    ig: "Igbo",
    id: "Indonesian",
    ing: "Ingush",
    ina: "interlingua",
    iku: "Inuktitut",
    ga: "Irish",
    it: "Italian",
    jw: "Javanese",
    kab: "Kabyle",
    kal: "Kalaallisut",
    kn: "Kannada",
    kau: "Kanuri",
    kas: "Kashmiri",
    kah: "Kashubian",
    kk: "Kazakh",
    km: "Khmer",
    kin: "Kinyarwanda",
    tlh: "Klingon",
    kon: "Kongo",
    kok: "Konkani",
    ku: "Kurdish",
    kmr: "KurdishNorthern",
    ky: "Kyrgyz",
    lo: "Lao",
    lag: "Latgalian",
    la: "Latin",
    lv: "Latvian",
    lim: "Limburgish",
    lin: "Lingala",
    lt: "Lithuanian",
    loj: "Lojban",
    lug: "Luganda",
    lb: "Luxembourgish",
    mk: "Macedonian",
    mai: "Maithili",
    mg: "Malagasy",
    ms: "Malay",
    ml: "Malayalam",
    mt: "Maltese",
    glv: "Manx",
    mi: "Maori",
    mr: "Marathi",
    mah: "Marshallese",
    mau: "MauritianCreole",
    frm: "MiddleFrench",
    mn: "Mongolian",
    mot: "Montenegrin",
    my: "Myanmar",
    nea: "Neapolitan",
    ne: "Nepali",
    sme: "NorthernSami",
    ped: "NorthernSotho",
    no: "Norwegian",
    nno: "Nynorsk",
    oci: "Occitan",
    oji: "Ojibwa",
    eno: "OldEnglish",
    or: "Oriya",
    orm: "Oromo",
    oss: "Ossetian",
    pam: "Pampanga",
    pap: "Papiamento",
    ps: "Pashto",
    fa: "Persian",
    pl: "Polish",
    pa: "Punjabi",
    que: "Quechua",
    otq: "QueretaroOttomi",
    ro: "Romanian",
    roh: "Romansh",
    rom: "Romany",
    ruy: "Rusyn",
    sm: "Samoan",
    san: "Sanskrit",
    srd: "Sardinian",
    sco: "Scots",
    gd: "ScotsGaelic",
    src: "SerbCyrillic",
    sr: "Serbian",
    "sr-Cyrl": "SerbianCyrillic",
    "sr-Latn": "SerbianLatin",
    sec: "SerboCroatian",
    st: "Sesotho",
    sha: "Shan",
    sn: "Shona",
    sil: "Silesian",
    sd: "Sindhi",
    si: "Sinhala",
    sk: "Slovak",
    sl: "Slovenian",
    so: "Somali",
    sol: "Songhailanguages",
    nbl: "SouthernNdebele",
    sot: "SouthernSotho",
    su: "Sundanese",
    sw: "Swahili",
    sv: "Swedish",
    syr: "Syriac",
    tgl: "Tagalog",
    ty: "Tahiti",
    tg: "Tajik",
    ta: "Tamil",
    tat: "Tatar",
    te: "Telugu",
    tet: "Tetum",
    th: "Thai",
    tir: "Tigrinya",
    to: "Tongan",
    tso: "Tsonga",
    tr: "Turkish",
    tuk: "Turkmen",
    twi: "Twi",
    ug: "Uyghur",
    uk: "Ukrainian",
    ups: "UpperSorbian",
    uz: "Uzbek",
    ven: "Venda",
    vi: "Vietnamese",
    wln: "Walloon",
    cy: "Welsh",
    fry: "WesternFrisian",
    wol: "Wolof",
    xh: "Xhosa",
    yi: "Yiddish",
    yo: "Yoruba",
    yua: "YukatanMayan",
    zaz: "Zaza",
    zu: "Zulu",
};

/**
 * a map from abbreviation of languages that supported by browsers to abbreviation of those supported by Edge Translate
 */
const BROWSER_LANGUAGES_MAP = {
    ach: "ach",
    ady: "en",
    af: "af",
    "af-NA": "af",
    "af-ZA": "af",
    ak: "aka",
    am: "am",
    ar: "ar",
    "ar-AR": "ar",
    "ar-MA": "ar",
    "ar-SA": "ar",
    "ay-BO": "aym",
    az: "az",
    "az-AZ": "az",
    "be-BY": "be",
    bg: "bg",
    "bg-BG": "bg",
    bn: "bn",
    "bn-IN": "bn",
    "bn-BD": "bn",
    "bs-BA": "bs",
    ca: "ca",
    "ca-ES": "ca",
    cak: "en",
    ceb: "ceb",
    "ck-US": "chr",
    co: "co",
    cs: "cs",
    "cs-CZ": "cs",
    cy: "cy",
    "cy-GB": "cy",
    da: "da",
    "da-DK": "da",
    de: "de",
    "de-AT": "de",
    "de-DE": "de",
    "de-CH": "de",
    dsb: "en",
    el: "el",
    "el-GR": "el",
    en: "en",
    "en-GB": "en",
    "en-AU": "en",
    "en-CA": "en",
    "en-IE": "en",
    "en-IN": "en",
    "en-PI": "en",
    "en-UD": "en",
    "en-US": "en",
    "en-ZA": "en",
    "en@pirate": "en",
    eo: "eo",
    "eo-EO": "eo",
    es: "es",
    "es-AR": "es",
    "es-419": "es",
    "es-CL": "es",
    "es-CO": "es",
    "es-EC": "es",
    "es-ES": "es",
    "es-LA": "es",
    "es-NI": "es",
    "es-MX": "es",
    "es-US": "es",
    "es-VE": "es",
    et: "et",
    "et-EE": "et",
    eu: "eu",
    "eu-ES": "eu",
    fa: "fa",
    "fa-IR": "fa",
    "fb-LT": "en",
    ff: "en",
    fi: "fi",
    "fi-FI": "fi",
    "fo-FO": "fao",
    fr: "fr",
    "fr-CA": "fr",
    "fr-FR": "fr",
    "fr-BE": "fr",
    "fr-CH": "fr",
    "fy-NL": "fy",
    ga: "ga",
    "ga-IE": "ga",
    gd: "gd",
    gl: "gl",
    "gl-ES": "gl",
    "gn-PY": "grn",
    "gu-IN": "gu",
    "gx-GR": "el",
    ha: "ha",
    haw: "haw",
    he: "he",
    "he-IL": "he",
    hi: "hi",
    "hi-IN": "hi",
    hmn: "hmn",
    hr: "hr",
    "hr-HR": "hr",
    hsb: "en",
    ht: "ht",
    hu: "hu",
    "hu-HU": "hu",
    "hy-AM": "hy",
    id: "id",
    "id-ID": "id",
    ig: "ig",
    is: "is",
    "is-IS": "is",
    it: "it",
    "it-IT": "it",
    iw: "he",
    ja: "ja",
    "ja-JP": "ja",
    "jv-ID": "jw",
    "ka-GE": "ka",
    "kk-KZ": "kk",
    km: "km",
    "km-KH": "km",
    kab: "kab",
    kn: "kn",
    "kn-IN": "kn",
    ko: "ko",
    "ko-KR": "ko",
    "ku-TR": "ku",
    ky: "ky",
    la: "la",
    "la-VA": "la",
    lb: "lb",
    "li-NL": "lim",
    lo: "lo",
    lt: "lt",
    "lt-LT": "lt",
    lv: "lv",
    "lv-LV": "lv",
    mai: "mai",
    "mg-MG": "mg",
    mi: "mi",
    mk: "mk",
    "mk-MK": "mk",
    ml: "ml",
    "ml-IN": "ml",
    "mn-MN": "mn",
    mr: "mr",
    "mr-IN": "mr",
    ms: "ms",
    "ms-MY": "ms",
    mt: "mt",
    "mt-MT": "mt",
    my: "my",
    no: "no",
    nb: "no",
    "nb-NO": "no",
    ne: "ne",
    "ne-NP": "ne",
    nl: "nl",
    "nl-BE": "nl",
    "nl-NL": "nl",
    "nn-NO": "no",
    ny: "ny",
    oc: "oci",
    "or-IN": "or",
    pa: "pa",
    "pa-IN": "pa",
    pl: "pl",
    "pl-PL": "pl",
    "ps-AF": "ps",
    pt: "pt",
    "pt-BR": "pt",
    "pt-PT": "pt",
    "qu-PE": "que",
    "rm-CH": "roh",
    ro: "ro",
    "ro-RO": "ro",
    ru: "ru",
    "ru-RU": "ru",
    "sa-IN": "san",
    sd: "sd",
    "se-NO": "sme",
    "si-LK": "si",
    sk: "sk",
    "sk-SK": "sk",
    sl: "sl",
    "sl-SI": "sl",
    sm: "sm",
    sn: "sn",
    "so-SO": "so",
    sq: "sq",
    "sq-AL": "sq",
    sr: "sr",
    "sr-RS": "sr",
    st: "st",
    su: "su",
    sv: "sv",
    "sv-SE": "sv",
    sw: "sw",
    "sw-KE": "sw",
    ta: "ta",
    "ta-IN": "ta",
    te: "te",
    "te-IN": "te",
    tg: "tg",
    "tg-TJ": "tg",
    th: "th",
    "th-TH": "th",
    tl: "fil",
    "tl-PH": "fil",
    tlh: "tlh",
    tr: "tr",
    "tr-TR": "tr",
    "tt-RU": "tat",
    uk: "uk",
    "uk-UA": "uk",
    ur: "ur",
    "ur-PK": "ur",
    uz: "uz",
    "uz-UZ": "uz",
    vi: "vi",
    "vi-VN": "vi",
    "xh-ZA": "xh",
    yi: "yi",
    "yi-DE": "yi",
    yo: "yo",
    zh: "zh-CN",
    "zh-Hans": "zh-CN",
    "zh-Hant": "zh-TW",
    "zh-CN": "zh-CN",
    "zh-HK": "zh-TW",
    "zh-SG": "zh-CN",
    "zh-TW": "zh-TW",
    "zu-ZA": "zu",
};

/**
 * Export languages and browser languages map.
 */
export { LANGUAGES, BROWSER_LANGUAGES_MAP };
